package edu.hubu.FileRecurveTree;

import java.io.File;


/*File类应用：
 * 编写一个递归方法，在命令行中以缩进方式的树状结构展示特定的文件夹及其子文件夹。
 * */
public class FileRecurveTreeDemo {
    public static void main(String[] args) {
        //确定根文件夹
        File rootFileFolder = new File("src\\");
        //打印根文件夹
        System.out.println(rootFileFolder.getName());
        //递归打印根文件夹中的所有子文件夹及子文件，初始层数为1
        printFolderName(rootFileFolder, 1);
    }

    private static void printFolderName(File rootFileFolder, int level) {
        //设置前置字符串
        StringBuilder preStr = new StringBuilder();

        //根据递归层数设置前置空格，实现树形打印
        for (int i = 0; i < level; i++) {
            preStr.append("    ");
        }

        //获取该目录下的所有子文件夹
        File[] childFiles = rootFileFolder.listFiles();
        for (int i = 0; i < childFiles.length; i++) {
            //打印目前所遍历的文件夹名或文件名
            System.out.println(preStr.toString() + childFiles[i].getName());
            //如果所遍历的是目录，则继续递归调用，直至遍历的是文件
            if (childFiles[i].isDirectory()) {
                printFolderName(childFiles[i], level + 1);
            }
        }

    }

}
